#ifndef __ARRAYINTERSECTION_H__
#define __ARRAYINTERSECTION_H__

#include <vector>
#include <unordered_set>
using namespace std;

/*
* leetcode 349  两个数组的交集
*/

/*
* 给定两个数组 nums1 和 nums2, 返回 它们的交集
* 输出结果中的每个元素一定是 唯一 的, 我们可以 不考虑 输出结果的顺序
*/
vector<int> ArrayIntersection(vector<int>& nums1, vector<int>& nums2) 
{
	unordered_set<int> results;
	unordered_set<int> hashTable;	//使用无序集合, 无论是映射还是取值, 效率是最高的

	//放置元素
	for (int num : nums1)
		hashTable.insert(num);

	for (int num : nums2)
		if (hashTable.find(num) != hashTable.end()) //从哈希表中寻找
			results.insert(num);

	//将无序集合转化为 vector 进行输出
	return vector<int>(results.begin(), results.end());
}

#endif // !__ARRAYINTERSECTION_H__

